package day323;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * @author tmh
 * @date 2023/3/23 20:42
 * @description 字母异位词分组
 */
public class T49 {
    public static void main(String[] args) {

    }

    /**
     * 排序，把排序之后的值作为key，值list集合里面存放对应的字符数组里面的符合要求的值
     * 这里使用了map的getOrDefault()方法
     *
     * @param strs
     * @return
     */
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String, List<String>> listHashMap = new HashMap<>();
        //对字符串数组进行遍历，然后再把里面的字符串进行排序这里我们使用的是增强for
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            Arrays.sort(charArray);
            String result = String.valueOf(charArray);
            List<String> list = listHashMap.getOrDefault(result, new ArrayList<>());
            list.add(str);
            listHashMap.put(result, list);
        }
        return new ArrayList<>(listHashMap.values());
    }
}
